package com.atguigu.lease.web.admin.service;

import com.atguigu.lease.model.entity.ApartmentInfo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentDetailVo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentItemVo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentQueryVo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentSubmitVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* @author liubo
* @description 针对表【apartment_info(公寓信息表)】的数据库操作Service
* @createDate 2023-07-24 15:48:00
*/
public interface ApartmentInfoService extends IService<ApartmentInfo> {

    void customSaveOrUpdate(ApartmentSubmitVo apartmentSubmitVo);

    void customPage(IPage<ApartmentItemVo> page, ApartmentQueryVo queryVo);

    ApartmentDetailVo customGetById(Long id);
    /***
     *
     *  如果一个业务方法有多个结果的可能！
     *     0. void 业务方法（） 只有一种可能（成功）
     *     1. boolean 业务方法()  只有两种可能
     *     2. int / result 业务方法（） 有多种可能
     *     3. void 业务方法（） + 自定义异常 + 抛出异常 + 全局异常快速处理  多种可能
     *        异常处理流派：
     *           更快速返回业务的结果！ 返回并不是到controller -> 利用全局异常处理器进行步骤！
     *           优势1： controller正常的业务只需要关注正确的结果即可！
     *           优势2： 异常抛出以后，会直达异常处理器，不会进行多层调用！！
     *           优势3： 也不影响正常业务
     *       基础技术掌握：
     *           1.全局异常处理
     *           2.自定义异常类型（code,message,错误的枚举）
     *               创建一个类 继承 RuntimeException
     *                  code
     *                  message
     *           3.抛出异常即可
     */

    void customRemoveById(Long id);
}
